[iOS 10] UNUserNotificationCenter を使用して未配信の通知を管理する #wwdc
はじめに
こんにちは。モバイルアプリサービス部の平屋です。前回の記事に引き続き、iOS 10 で追加された「User Notifications framework」のクラスを使用した実装を紹介します。
以下の記事でローカル通知を作成する手順を解説しました。
- [iOS 10] User Notifications framework を使用して時限式のローカル通知を作成する
- [iOS 10] User Notifications framework を使用して指定日時に発火するローカル通知を作成する
- [iOS 10] User Notifications framework を使用して位置情報に基づいて発火するローカル通知を作成する #wwdc
本記事では、上記記事の手順で作成されてまだ配信されていない通知を管理する方法を紹介します。
本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。
実装
未配信の通知を管理するには、UNUserNotificationCenter
のメソッドを使用します。UNUserNotificationCenter
は、以前の記事で通知を登録する際に使用しました。
未配信の通知の一覧を取得する
未配信の通知の一覧を取得するには UNUserNotificationCenter
の getPendingNotificationRequests(completionHandler:)
メソッドを使用します。
取得処理は非同期で実行されます。処理完了時に呼ばれるハンドラはの引数は UNNotificationRequest
の配列となっていて、UNNotificationRequest
は、次に解説する「特定の未配信の通知を削除する」場合などに使用できます。
let center = UNUserNotificationCenter.current() center.getPendingNotificationRequests { (requests: [UNNotificationRequest]) in }
特定の未配信の通知を削除する
特定の未配信の通知を削除するには UNUserNotificationCenter
の removePendingNotificationRequests(withIdentifiers:)
メソッドを使用します。
引数には、削除したい UNNotificationRequest
の identifier
の配列をセットします。削除処理は非同期で実行されます。ローカル通知の場合のみ削除可能です。
let center = UNUserNotificationCenter.current() center.removePendingNotificationRequests(withIdentifiers: [request.identifier])
全ての未配信の通知を削除する
全ての未配信の通知を削除するには UNUserNotificationCenter
の removeAllPendingNotificationRequests()
メソッドを使用します。
削除処理は非同期で実行されます。ローカル通知の場合のみ削除可能です。
let center = UNUserNotificationCenter.current() center.removeAllPendingNotificationRequests()
さいごに
本記事では、未配信の通知を管理する方法を紹介しました。次回は通知センターに表示されている通知を管理する方法を試してみようと思います!